The increased density of transistors in an integrated circuit permits a processor to support immense processing capabilities. Computing systems take advantage of the tremendous processing capabilities by enabling execution of complex applications.
An individual application executing on a processor may consume substantial processing resources, but may not fully consume the capabilities of a processor. The spare processing resources can be used to support additional applications. The processor may allow processing supporting multiple applications to occur in parallel when the requested processor resources are distinct. The processor can selectively schedule resources that are shared by the multiple applications.
The processor can time slice shared resources in a manner that permits each accessing application a fair opportunity to utilize the shared resource. The processor needs to implement some manner of allocating and tracking the utilization of resources within the processor in order to effectively manage the sharing of resources.
The processor may not have the ability to share resources on the basis of time alone, as the utilization of shared resources may be unequally split between applications. A time period allocated to a first application may be insufficient to completely process a required task, while the same time allocation to a second resource may result in idle time for the resource. Additionally, allocating shared resources based on a set number of instructions may be an unfair allocation of resources, as the time to execute some processor instructions may vary based on prior instructions or data sets operated on. The time needed to execute a set number of instructions corresponding to a first application may not support a latency requirement that needs to be satisfied by a second application sharing the resource.
A processor having the ability to support multiple applications and having the ability to share resources among multiple applications needs to be able to manage the sharing of resources between the multiple applications. The processor needs to support some level of fairness in allocating access to the shared resources, while ensuring that the sharing of resources does not result in the introduction of errors or other adverse effects into other applications sharing the resources.